// var createError = require('http-errors');
var express = require("express");
var express = require("express");
const multer = require("multer");
const upload = multer({ dest: __dirname + "/../../uploads" });
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var db = require("./model/index");
var Achievements = require("./routes/Achievements");
var Addressbook = require("./routes/Addressbook");
var Atten = require("./routes/Atten");
var Home = require("./routes/Home");
var Information = require("./routes/Information");
var Login = require("./routes/Login");
var Meetmanagement = require("./routes/Meetmanagement");
var Personalcenter = require("./routes/Personalcenter");
var Register = require("./routes/Register");
var StaffAdmin = require("./routes/StaffAdmin");
var System = require("./routes/System");
var ZhangXi = require("./routes/zhangxi");
const { JsonWebTokenError } = require('jsonwebtoken');
var jwt = require("jsonwebtoken");
var app = express();


/* CORS  解决跨域问题 */
/* 拦截所有请求，给他一个处理函数 */
// app.all("*", function (req, res, next) {
//   /* 设置响应头，允许所有网站都可以请求 */
//   res.header("Access-Control-Allow-Origin", "*");
//   /* 设置我们的请求方式可以有以下这些 */
//   res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE,OPTIONS");
//   /* 设置响应头可以有以下这些 */
//   res.header(
//     "Access-Control-Allow-Headers",
//     "Content-Type,Content-Length, Authorization, Accept,X-Requested-With,token"
//   );
//   /* 放行 */
//   // next();
//   req.method === "OPTIONS" ? res.status(204).end() : next();
// });
// app.all("*", function (req, res, next) {
//   // console.log(req.url);
//   // console.log(req.url);
//   // 判断是不是登录页面过来的
//   // startsWith以什么开头
//   // 不拦截登录,可以下一步，其他的拦截
//   if (req.url.startsWith("/login")) {
//     next();
//   } else {
//     // console.log(req.headers);
//     // console.log(req.headers.token);
//     const token = req.headers.token;
//     // // 判断前端有没有传token
//     if (!token) {
//       res.status(401).send({ msg: "请发送token" }).end();
//       return;
//     }
//     // console.log(token);
//     // 解密token
//     jwt.verify(token, "web281", (err, decoded) => {
//       // console.log(err, decoded);
//       if (err) {
//         res.status(401).send({ msg: "token错误,验证失败" }).end();
//       } else {
//         next();
//         // console.log(decoded.data);
//         // let sql;
//         // // 如果数据里面有decoded.data
//         // sql = 'SELECT post_id FROM admin where account=' + decoded.data.account + ';'
//         // mySql.query(sql, function (err, data) {
//         //     console.log(err, data);
//         //     if (err) {
//         //         // 密钥过期
//         //         res.status(401).send({ msg: 'token过期了' }).end()
//         //     } else {
//         //         next()
//         //     }
//         // })
//       }
//     });
//   }
// });

// app.all('*', function (req, res, next) {
//     // console.log(req.url);
//     // console.log(req.url);
//     // 判断是不是登录页面过来的
//     // startsWith以什么开头
//     // 不拦截登录,可以下一步，其他的拦截
//     if (req.url.startsWith('/login') || req.url.startsWith('/login')) {
//         next();
//     } else {
//         // console.log(req.headers);
//         // console.log(req.headers.token);
//         const token = req.headers.token;
//         // // 判断前端有没有传token
//         if (!token) {
//             res.status(401).send({ msg: '请发送token' }).end()
//             return
//         }
//         // console.log(token);
//         // 解密token
//         jwt.verify(token, 'web281', (err, decoded) => {
//             // console.log(err, decoded);
//             if (err) {
//                 res.status(401).send({ msg: 'token错误,验证失败' }).end()
//             } else {
//                 next()
//                 // console.log(decoded.data);
//                 // let sql;
//                 // // 如果数据里面有decoded.data
//                 // sql = 'SELECT post_id FROM admin where account=' + decoded.data.account + ';'
//                 // mySql.query(sql, function (err, data) {
//                 //     console.log(err, data);
//                 //     if (err) {
//                 //         // 密钥过期
//                 //         res.status(401).send({ msg: 'token过期了' }).end()
//                 //     } else {
//                 //         next()
//                 //     }
//                 // })
//             }
//         })
//     }

// })

// view engine setup
// app.set('views', path.join(__dirname, 'views'));
// app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use("/achievements", Achievements);
app.use("/addressbook", Addressbook);
app.use("/atten", Atten);
app.use("/home", Home);
app.use("/information", Information);
app.use("/login", Login);
app.use("/meetmanagement", Meetmanagement);
app.use("/personalcenter", Personalcenter);
app.use("/register", Register);
app.use("/staffAdmin", StaffAdmin);
app.use("/system", System);
app.use("/zhangXi", ZhangXi);
app.use("/uploads", express.static(__dirname + "/uploads"));
app.use("/achievements", Achievements);
app.use("/addressbook", Addressbook);
app.use("/atten", Atten);
app.use("/home", Home);
app.use("/information", Information);
app.use("/login", Login);
app.use("/meetmanagement", Meetmanagement);
app.use("/personalcenter", Personalcenter);
app.use("/register", Register);
app.use("/staffAdmin", StaffAdmin);
app.use("/system", System);
// catch 404 and forward to error handler
// app.use(function (req, res, next) {
//     next(createError(404));
// });

// error handler
// app.use(function (err, req, res, next) {
//     // set locals, only providing error in development
//     res.locals.message = err.message;
//     res.locals.error = req.app.get('env') === 'development' ? err : {};

//     // render the error page
//     res.status(err.status || 500);
//     res.render('error');
// });

app.listen(8787, function () {
    console.log("运行成功");
});
// module.exports = app;
